{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "05b70e5d-6964-4d9a-bd4e-4f229948987f",
   "metadata": {},
   "source": [
    "# pandas\n",
    "\n",
    "Panel DAS -> data analysis system"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a531fa1-c728-49b9-8f85-b522af0012a1",
   "metadata": {},
   "source": [
    "## plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ca2ec428-8546-4c8f-a183-c89e55b9fcaa",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 固定代码\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "35c19d48-15c6-468f-85a2-c07139c11caa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 60,  70,  65, 100, 230, 150, 100, 300, 250, 150])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 时间4点，5点，... 22点\n",
    "times = np.array([6, 7, 8, 11, 12, 13, 18, 19, 20, 21])   #np.array 把列表转变为数组\n",
    "# 顾客人数\n",
    "customers = np.array([60, 70, 65, 100, 230, 150, 100, 300, 250, 150])\n",
    "customers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "4737c7e0-108e-47df-bf79-fface3045cac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x197fbb58d60>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(times,customers,'o')    # plt.plot 以xxx为横轴，aaa为纵轴画图\n",
    "                                    # plot 默认画折线图，+，-，o，* 可以改变画图的样式\n",
    "plt.plot(times,customers)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f9e6e303-05ad-468c-b220-af9331e21f95",
   "metadata": {},
   "source": [
    "## Series 序列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "78cc5da1-9cbc-49bf-904b-46599fb71d43",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     60\n",
       "1     70\n",
       "2     65\n",
       "3    100\n",
       "4    230\n",
       "5    150\n",
       "6    100\n",
       "7    300\n",
       "8    250\n",
       "9    150\n",
       "dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 时间4点，5点，... 22点\n",
    "times = pd.Series([6, 7, 8, 11, 12, 13, 18, 19, 20, 21])   #pd.serise 列表转为序列\n",
    "# 顾客人数\n",
    "customers = pd.Series([60, 70, 65, 100, 230, 150, 100, 300, 250, 150])\n",
    "customers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0b0abe7a-4460-410d-86ad-e4b404af1236",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RangeIndex(start=0, stop=10, step=1)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "customers.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c43a4bd2-be43-4104-a8ee-e183fdd30c61",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 60,  70,  65, 100, 230, 150, 100, 300, 250, 150], dtype=int64)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "customers.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "e9a089e9-b4be-4a2e-bc14-a0a58254ff40",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6      60\n",
      "7      70\n",
      "8      65\n",
      "11    100\n",
      "12    230\n",
      "13    150\n",
      "18    100\n",
      "19    300\n",
      "20    250\n",
      "21    150\n",
      "dtype: int64\n"
     ]
    }
   ],
   "source": [
    "customers = pd.Series([60, 70, 65, 100, 230, 150, 100, 300, 250, 150],\n",
    "                        index = [6, 7, 8, 11, 12, 13, 18, 19, 20, 21])     # 添加了一个索引，索引可以是文本\n",
    "print(customers)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "54560cdb-534e-4a82-839c-9eeae4aa74c9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "100"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "customers[18]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "27e8cbbe-30ba-4f17-b224-ea7c8d05b00d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "100"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "customers.iloc[6]   # iloc:初始行号  loc:行标签"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2bbe13ca-3de0-4fe5-b352-4fde448abf9a",
   "metadata": {},
   "source": [
    "## DataFrame "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "2a6e0bbd-4ad0-4ef8-9d98-69e27e9a5d6b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 时段4点，5点，... 22点\n",
    "times = np.array([6, 7, 8, 11, 12, 13, 18, 19, 20, 21])\n",
    "# 顾客人数\n",
    "customers = np.array([60, 70, 65, 100, 230, 150, 100, 300, 250, 150])\n",
    "# 平均消费\n",
    "costs = np.array([6, 7, 8, 24, 23, 26, 45, 55, 45, 40])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "05bbd7c5-3341-4ade-ba9a-a1a902e24175",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>customers</th>\n",
       "      <th>costs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>60</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>70</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>65</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>100</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>230</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>150</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>100</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>300</td>\n",
       "      <td>55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>250</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>150</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    customers  costs\n",
       "6          60      6\n",
       "7          70      7\n",
       "8          65      8\n",
       "11        100     24\n",
       "12        230     23\n",
       "13        150     26\n",
       "18        100     45\n",
       "19        300     55\n",
       "20        250     45\n",
       "21        150     40"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = {'customers': customers, 'costs': costs}\n",
    "df = pd.DataFrame(data, index=times)    # 创建\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c79af7fc-ca37-45b5-a921-b96a22a3da16",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'customers': array([ 60,  70,  65, 100, 230, 150, 100, 300, 250, 150]),\n",
       " 'costs': array([ 6,  7,  8, 24, 23, 26, 45, 55, 45, 40])}"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "fd36057b-690d-4664-a947-8775fe534386",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "23"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['costs'][12]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "06ea7bfe-394c-4870-83bb-72b77f424bc7",
   "metadata": {},
   "source": [
    "### 课堂训练：生成40个同学的语文成绩，满分150，平均分80分，标准差20分。\n",
    "### 用随机数生成40个分数，要求为整数。生成一个序列\n",
    "numpy.random.nornal"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "131095d7-96af-4eb2-ae88-68a6c1c82247",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 49  75  75  48 113  88  99  80  92  44  71 105  75  97  60  78  52  83\n",
      "  77  65  65  97  83  82  38  69 110  67  79  62  78 100  99  98  79 103\n",
      "  63  77  93  58]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "# 生成40个平均值为80，标准差为20的40个随机数\n",
    "chinese = np.random.normal(80, 20, 40).astype(np.int32)    # astype 转变数据类型\n",
    "\n",
    "\n",
    "# 打印生成的成绩序列\n",
    "print(chinese)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "141d58f0-3088-4838-8cef-dd3482382b43",
   "metadata": {},
   "outputs": [],
   "source": [
    "chinese = np.random.normal(80, 20, 40).astype(np.int32)\n",
    "maths = np.random.normal(60, 30, 40).astype(np.int32)\n",
    "english = np.random.normal(70, 20, 40).astype(np.int32)\n",
    "physics = np.random.normal(80, 10, 40).astype(np.int32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4f3cd6ee-00dd-4628-9764-5e340cb58819",
   "metadata": {},
   "outputs": [],
   "source": [
    "scores = {'chinese':chinese,'maths':maths,'english':english,'physics':physics}\n",
    "df=pd.DataFrame(scores)\n",
    "\n",
    "\n",
    "#df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ecd6c1de-7b28-4e26-91a7-439f5c8fdfc8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chinese</th>\n",
       "      <th>maths</th>\n",
       "      <th>english</th>\n",
       "      <th>physics</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>32219100001</th>\n",
       "      <td>47</td>\n",
       "      <td>64</td>\n",
       "      <td>56</td>\n",
       "      <td>63</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100002</th>\n",
       "      <td>86</td>\n",
       "      <td>41</td>\n",
       "      <td>87</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100003</th>\n",
       "      <td>54</td>\n",
       "      <td>116</td>\n",
       "      <td>78</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100004</th>\n",
       "      <td>46</td>\n",
       "      <td>63</td>\n",
       "      <td>65</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100005</th>\n",
       "      <td>93</td>\n",
       "      <td>55</td>\n",
       "      <td>85</td>\n",
       "      <td>87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100006</th>\n",
       "      <td>66</td>\n",
       "      <td>47</td>\n",
       "      <td>43</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100007</th>\n",
       "      <td>71</td>\n",
       "      <td>4</td>\n",
       "      <td>62</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100008</th>\n",
       "      <td>79</td>\n",
       "      <td>2</td>\n",
       "      <td>77</td>\n",
       "      <td>99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100009</th>\n",
       "      <td>82</td>\n",
       "      <td>68</td>\n",
       "      <td>43</td>\n",
       "      <td>87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100010</th>\n",
       "      <td>46</td>\n",
       "      <td>33</td>\n",
       "      <td>62</td>\n",
       "      <td>90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100011</th>\n",
       "      <td>82</td>\n",
       "      <td>44</td>\n",
       "      <td>102</td>\n",
       "      <td>76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100012</th>\n",
       "      <td>71</td>\n",
       "      <td>71</td>\n",
       "      <td>66</td>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100013</th>\n",
       "      <td>86</td>\n",
       "      <td>35</td>\n",
       "      <td>77</td>\n",
       "      <td>55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100014</th>\n",
       "      <td>91</td>\n",
       "      <td>74</td>\n",
       "      <td>74</td>\n",
       "      <td>66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100015</th>\n",
       "      <td>94</td>\n",
       "      <td>83</td>\n",
       "      <td>58</td>\n",
       "      <td>76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100016</th>\n",
       "      <td>81</td>\n",
       "      <td>33</td>\n",
       "      <td>44</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100017</th>\n",
       "      <td>84</td>\n",
       "      <td>70</td>\n",
       "      <td>93</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100018</th>\n",
       "      <td>90</td>\n",
       "      <td>91</td>\n",
       "      <td>60</td>\n",
       "      <td>71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100019</th>\n",
       "      <td>83</td>\n",
       "      <td>21</td>\n",
       "      <td>58</td>\n",
       "      <td>62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100020</th>\n",
       "      <td>82</td>\n",
       "      <td>49</td>\n",
       "      <td>112</td>\n",
       "      <td>68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100021</th>\n",
       "      <td>40</td>\n",
       "      <td>22</td>\n",
       "      <td>48</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100022</th>\n",
       "      <td>51</td>\n",
       "      <td>113</td>\n",
       "      <td>93</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100023</th>\n",
       "      <td>97</td>\n",
       "      <td>61</td>\n",
       "      <td>109</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100024</th>\n",
       "      <td>75</td>\n",
       "      <td>49</td>\n",
       "      <td>71</td>\n",
       "      <td>76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100025</th>\n",
       "      <td>78</td>\n",
       "      <td>31</td>\n",
       "      <td>56</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100026</th>\n",
       "      <td>103</td>\n",
       "      <td>56</td>\n",
       "      <td>77</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100027</th>\n",
       "      <td>49</td>\n",
       "      <td>43</td>\n",
       "      <td>79</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100028</th>\n",
       "      <td>75</td>\n",
       "      <td>55</td>\n",
       "      <td>67</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100029</th>\n",
       "      <td>67</td>\n",
       "      <td>83</td>\n",
       "      <td>89</td>\n",
       "      <td>73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100030</th>\n",
       "      <td>109</td>\n",
       "      <td>33</td>\n",
       "      <td>71</td>\n",
       "      <td>94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100031</th>\n",
       "      <td>83</td>\n",
       "      <td>72</td>\n",
       "      <td>74</td>\n",
       "      <td>105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100032</th>\n",
       "      <td>86</td>\n",
       "      <td>138</td>\n",
       "      <td>90</td>\n",
       "      <td>73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100033</th>\n",
       "      <td>69</td>\n",
       "      <td>24</td>\n",
       "      <td>72</td>\n",
       "      <td>88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100034</th>\n",
       "      <td>102</td>\n",
       "      <td>59</td>\n",
       "      <td>65</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100035</th>\n",
       "      <td>109</td>\n",
       "      <td>26</td>\n",
       "      <td>48</td>\n",
       "      <td>86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100036</th>\n",
       "      <td>74</td>\n",
       "      <td>88</td>\n",
       "      <td>93</td>\n",
       "      <td>86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100037</th>\n",
       "      <td>89</td>\n",
       "      <td>165</td>\n",
       "      <td>68</td>\n",
       "      <td>71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100038</th>\n",
       "      <td>75</td>\n",
       "      <td>41</td>\n",
       "      <td>86</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100039</th>\n",
       "      <td>72</td>\n",
       "      <td>112</td>\n",
       "      <td>87</td>\n",
       "      <td>97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100040</th>\n",
       "      <td>75</td>\n",
       "      <td>100</td>\n",
       "      <td>47</td>\n",
       "      <td>102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             chinese  maths  english  physics\n",
       "32219100001       47     64       56       63\n",
       "32219100002       86     41       87       59\n",
       "32219100003       54    116       78       72\n",
       "32219100004       46     63       65       85\n",
       "32219100005       93     55       85       87\n",
       "32219100006       66     47       43       67\n",
       "32219100007       71      4       62      100\n",
       "32219100008       79      2       77       99\n",
       "32219100009       82     68       43       87\n",
       "32219100010       46     33       62       90\n",
       "32219100011       82     44      102       76\n",
       "32219100012       71     71       66       65\n",
       "32219100013       86     35       77       55\n",
       "32219100014       91     74       74       66\n",
       "32219100015       94     83       58       76\n",
       "32219100016       81     33       44       83\n",
       "32219100017       84     70       93       81\n",
       "32219100018       90     91       60       71\n",
       "32219100019       83     21       58       62\n",
       "32219100020       82     49      112       68\n",
       "32219100021       40     22       48       85\n",
       "32219100022       51    113       93       84\n",
       "32219100023       97     61      109       89\n",
       "32219100024       75     49       71       76\n",
       "32219100025       78     31       56       83\n",
       "32219100026      103     56       77       72\n",
       "32219100027       49     43       79       81\n",
       "32219100028       75     55       67       83\n",
       "32219100029       67     83       89       73\n",
       "32219100030      109     33       71       94\n",
       "32219100031       83     72       74      105\n",
       "32219100032       86    138       90       73\n",
       "32219100033       69     24       72       88\n",
       "32219100034      102     59       65       70\n",
       "32219100035      109     26       48       86\n",
       "32219100036       74     88       93       86\n",
       "32219100037       89    165       68       71\n",
       "32219100038       75     41       86       83\n",
       "32219100039       72    112       87       97\n",
       "32219100040       75    100       47      102"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生成从1到40的学号列表\n",
    "studentid=[]\n",
    "for i in range(40):\n",
    "    studentid.append(32219100001+i)\n",
    "\n",
    "df=pd.DataFrame(scores,index=studentid)\n",
    "\n",
    "\n",
    "df\n",
    "#studentid"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a33bf7b4-2d3e-4dc6-b7bf-6a563b12be16",
   "metadata": {},
   "source": [
    "## 数据读取导出"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "9881516b-6bb2-461b-9f3d-9df6ef6d948e",
   "metadata": {},
   "outputs": [],
   "source": [
    "#df[['chinese','maths']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "83a71c31-6990-4b13-bb8a-39f5b9ebb5c9",
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_csv('score.csv')   # to_csv: 把df中储存的数据导出到名为score的csv文件中"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "940dfb61-2eb2-440d-920a-9dba411d6765",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "chinese    86\n",
       "maths      35\n",
       "english    77\n",
       "physics    55\n",
       "Name: 32219100013, dtype: int32"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[32219100013]   #loc: 根据行标签导出某行的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "04b72703-4dd8-4cbc-b8f4-5dfc60ef1f2c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chinese</th>\n",
       "      <th>maths</th>\n",
       "      <th>english</th>\n",
       "      <th>physics</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>32219100003</th>\n",
       "      <td>54</td>\n",
       "      <td>116</td>\n",
       "      <td>78</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100018</th>\n",
       "      <td>90</td>\n",
       "      <td>91</td>\n",
       "      <td>60</td>\n",
       "      <td>71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100022</th>\n",
       "      <td>51</td>\n",
       "      <td>113</td>\n",
       "      <td>93</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100032</th>\n",
       "      <td>86</td>\n",
       "      <td>138</td>\n",
       "      <td>90</td>\n",
       "      <td>73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100037</th>\n",
       "      <td>89</td>\n",
       "      <td>165</td>\n",
       "      <td>68</td>\n",
       "      <td>71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100039</th>\n",
       "      <td>72</td>\n",
       "      <td>112</td>\n",
       "      <td>87</td>\n",
       "      <td>97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100040</th>\n",
       "      <td>75</td>\n",
       "      <td>100</td>\n",
       "      <td>47</td>\n",
       "      <td>102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             chinese  maths  english  physics\n",
       "32219100003       54    116       78       72\n",
       "32219100018       90     91       60       71\n",
       "32219100022       51    113       93       84\n",
       "32219100032       86    138       90       73\n",
       "32219100037       89    165       68       71\n",
       "32219100039       72    112       87       97\n",
       "32219100040       75    100       47      102"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df['maths']>=90]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "decbc16b-5480-4fbb-9944-b636d958c1ce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chinese</th>\n",
       "      <th>maths</th>\n",
       "      <th>english</th>\n",
       "      <th>physics</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>32219100003</th>\n",
       "      <td>54</td>\n",
       "      <td>116</td>\n",
       "      <td>78</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100022</th>\n",
       "      <td>51</td>\n",
       "      <td>113</td>\n",
       "      <td>93</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100032</th>\n",
       "      <td>86</td>\n",
       "      <td>138</td>\n",
       "      <td>90</td>\n",
       "      <td>73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100037</th>\n",
       "      <td>89</td>\n",
       "      <td>165</td>\n",
       "      <td>68</td>\n",
       "      <td>71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100039</th>\n",
       "      <td>72</td>\n",
       "      <td>112</td>\n",
       "      <td>87</td>\n",
       "      <td>97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100040</th>\n",
       "      <td>75</td>\n",
       "      <td>100</td>\n",
       "      <td>47</td>\n",
       "      <td>102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             chinese  maths  english  physics\n",
       "32219100003       54    116       78       72\n",
       "32219100022       51    113       93       84\n",
       "32219100032       86    138       90       73\n",
       "32219100037       89    165       68       71\n",
       "32219100039       72    112       87       97\n",
       "32219100040       75    100       47      102"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[(df['maths']>=100)&(df['chinese']>=40)&(df['english'] >=40)&(df['physics'] >=40)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "5ec57806-4f94-4433-8e89-dcc28aa7ba3f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chinese</th>\n",
       "      <th>maths</th>\n",
       "      <th>english</th>\n",
       "      <th>physics</th>\n",
       "      <th>total</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>32219100001</th>\n",
       "      <td>47</td>\n",
       "      <td>64</td>\n",
       "      <td>56</td>\n",
       "      <td>63</td>\n",
       "      <td>230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100002</th>\n",
       "      <td>86</td>\n",
       "      <td>41</td>\n",
       "      <td>87</td>\n",
       "      <td>59</td>\n",
       "      <td>273</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100003</th>\n",
       "      <td>54</td>\n",
       "      <td>116</td>\n",
       "      <td>78</td>\n",
       "      <td>72</td>\n",
       "      <td>320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100004</th>\n",
       "      <td>46</td>\n",
       "      <td>63</td>\n",
       "      <td>65</td>\n",
       "      <td>85</td>\n",
       "      <td>259</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100005</th>\n",
       "      <td>93</td>\n",
       "      <td>55</td>\n",
       "      <td>85</td>\n",
       "      <td>87</td>\n",
       "      <td>320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100006</th>\n",
       "      <td>66</td>\n",
       "      <td>47</td>\n",
       "      <td>43</td>\n",
       "      <td>67</td>\n",
       "      <td>223</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100007</th>\n",
       "      <td>71</td>\n",
       "      <td>4</td>\n",
       "      <td>62</td>\n",
       "      <td>100</td>\n",
       "      <td>237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100008</th>\n",
       "      <td>79</td>\n",
       "      <td>2</td>\n",
       "      <td>77</td>\n",
       "      <td>99</td>\n",
       "      <td>257</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100009</th>\n",
       "      <td>82</td>\n",
       "      <td>68</td>\n",
       "      <td>43</td>\n",
       "      <td>87</td>\n",
       "      <td>280</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100010</th>\n",
       "      <td>46</td>\n",
       "      <td>33</td>\n",
       "      <td>62</td>\n",
       "      <td>90</td>\n",
       "      <td>231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100011</th>\n",
       "      <td>82</td>\n",
       "      <td>44</td>\n",
       "      <td>102</td>\n",
       "      <td>76</td>\n",
       "      <td>304</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100012</th>\n",
       "      <td>71</td>\n",
       "      <td>71</td>\n",
       "      <td>66</td>\n",
       "      <td>65</td>\n",
       "      <td>273</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100013</th>\n",
       "      <td>86</td>\n",
       "      <td>35</td>\n",
       "      <td>77</td>\n",
       "      <td>55</td>\n",
       "      <td>253</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100014</th>\n",
       "      <td>91</td>\n",
       "      <td>74</td>\n",
       "      <td>74</td>\n",
       "      <td>66</td>\n",
       "      <td>305</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100015</th>\n",
       "      <td>94</td>\n",
       "      <td>83</td>\n",
       "      <td>58</td>\n",
       "      <td>76</td>\n",
       "      <td>311</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100016</th>\n",
       "      <td>81</td>\n",
       "      <td>33</td>\n",
       "      <td>44</td>\n",
       "      <td>83</td>\n",
       "      <td>241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100017</th>\n",
       "      <td>84</td>\n",
       "      <td>70</td>\n",
       "      <td>93</td>\n",
       "      <td>81</td>\n",
       "      <td>328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100018</th>\n",
       "      <td>90</td>\n",
       "      <td>91</td>\n",
       "      <td>60</td>\n",
       "      <td>71</td>\n",
       "      <td>312</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100019</th>\n",
       "      <td>83</td>\n",
       "      <td>21</td>\n",
       "      <td>58</td>\n",
       "      <td>62</td>\n",
       "      <td>224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100020</th>\n",
       "      <td>82</td>\n",
       "      <td>49</td>\n",
       "      <td>112</td>\n",
       "      <td>68</td>\n",
       "      <td>311</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100021</th>\n",
       "      <td>40</td>\n",
       "      <td>22</td>\n",
       "      <td>48</td>\n",
       "      <td>85</td>\n",
       "      <td>195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100022</th>\n",
       "      <td>51</td>\n",
       "      <td>113</td>\n",
       "      <td>93</td>\n",
       "      <td>84</td>\n",
       "      <td>341</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100023</th>\n",
       "      <td>97</td>\n",
       "      <td>61</td>\n",
       "      <td>109</td>\n",
       "      <td>89</td>\n",
       "      <td>356</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100024</th>\n",
       "      <td>75</td>\n",
       "      <td>49</td>\n",
       "      <td>71</td>\n",
       "      <td>76</td>\n",
       "      <td>271</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100025</th>\n",
       "      <td>78</td>\n",
       "      <td>31</td>\n",
       "      <td>56</td>\n",
       "      <td>83</td>\n",
       "      <td>248</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100026</th>\n",
       "      <td>103</td>\n",
       "      <td>56</td>\n",
       "      <td>77</td>\n",
       "      <td>72</td>\n",
       "      <td>308</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100027</th>\n",
       "      <td>49</td>\n",
       "      <td>43</td>\n",
       "      <td>79</td>\n",
       "      <td>81</td>\n",
       "      <td>252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100028</th>\n",
       "      <td>75</td>\n",
       "      <td>55</td>\n",
       "      <td>67</td>\n",
       "      <td>83</td>\n",
       "      <td>280</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100029</th>\n",
       "      <td>67</td>\n",
       "      <td>83</td>\n",
       "      <td>89</td>\n",
       "      <td>73</td>\n",
       "      <td>312</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100030</th>\n",
       "      <td>109</td>\n",
       "      <td>33</td>\n",
       "      <td>71</td>\n",
       "      <td>94</td>\n",
       "      <td>307</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100031</th>\n",
       "      <td>83</td>\n",
       "      <td>72</td>\n",
       "      <td>74</td>\n",
       "      <td>105</td>\n",
       "      <td>334</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100032</th>\n",
       "      <td>86</td>\n",
       "      <td>138</td>\n",
       "      <td>90</td>\n",
       "      <td>73</td>\n",
       "      <td>387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100033</th>\n",
       "      <td>69</td>\n",
       "      <td>24</td>\n",
       "      <td>72</td>\n",
       "      <td>88</td>\n",
       "      <td>253</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100034</th>\n",
       "      <td>102</td>\n",
       "      <td>59</td>\n",
       "      <td>65</td>\n",
       "      <td>70</td>\n",
       "      <td>296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100035</th>\n",
       "      <td>109</td>\n",
       "      <td>26</td>\n",
       "      <td>48</td>\n",
       "      <td>86</td>\n",
       "      <td>269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100036</th>\n",
       "      <td>74</td>\n",
       "      <td>88</td>\n",
       "      <td>93</td>\n",
       "      <td>86</td>\n",
       "      <td>341</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100037</th>\n",
       "      <td>89</td>\n",
       "      <td>165</td>\n",
       "      <td>68</td>\n",
       "      <td>71</td>\n",
       "      <td>393</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100038</th>\n",
       "      <td>75</td>\n",
       "      <td>41</td>\n",
       "      <td>86</td>\n",
       "      <td>83</td>\n",
       "      <td>285</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100039</th>\n",
       "      <td>72</td>\n",
       "      <td>112</td>\n",
       "      <td>87</td>\n",
       "      <td>97</td>\n",
       "      <td>368</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100040</th>\n",
       "      <td>75</td>\n",
       "      <td>100</td>\n",
       "      <td>47</td>\n",
       "      <td>102</td>\n",
       "      <td>324</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             chinese  maths  english  physics  total\n",
       "32219100001       47     64       56       63    230\n",
       "32219100002       86     41       87       59    273\n",
       "32219100003       54    116       78       72    320\n",
       "32219100004       46     63       65       85    259\n",
       "32219100005       93     55       85       87    320\n",
       "32219100006       66     47       43       67    223\n",
       "32219100007       71      4       62      100    237\n",
       "32219100008       79      2       77       99    257\n",
       "32219100009       82     68       43       87    280\n",
       "32219100010       46     33       62       90    231\n",
       "32219100011       82     44      102       76    304\n",
       "32219100012       71     71       66       65    273\n",
       "32219100013       86     35       77       55    253\n",
       "32219100014       91     74       74       66    305\n",
       "32219100015       94     83       58       76    311\n",
       "32219100016       81     33       44       83    241\n",
       "32219100017       84     70       93       81    328\n",
       "32219100018       90     91       60       71    312\n",
       "32219100019       83     21       58       62    224\n",
       "32219100020       82     49      112       68    311\n",
       "32219100021       40     22       48       85    195\n",
       "32219100022       51    113       93       84    341\n",
       "32219100023       97     61      109       89    356\n",
       "32219100024       75     49       71       76    271\n",
       "32219100025       78     31       56       83    248\n",
       "32219100026      103     56       77       72    308\n",
       "32219100027       49     43       79       81    252\n",
       "32219100028       75     55       67       83    280\n",
       "32219100029       67     83       89       73    312\n",
       "32219100030      109     33       71       94    307\n",
       "32219100031       83     72       74      105    334\n",
       "32219100032       86    138       90       73    387\n",
       "32219100033       69     24       72       88    253\n",
       "32219100034      102     59       65       70    296\n",
       "32219100035      109     26       48       86    269\n",
       "32219100036       74     88       93       86    341\n",
       "32219100037       89    165       68       71    393\n",
       "32219100038       75     41       86       83    285\n",
       "32219100039       72    112       87       97    368\n",
       "32219100040       75    100       47      102    324"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#计算总分\n",
    "total=[]\n",
    "#score = {'chinese': chinese, 'english': english,'maths':maths,'physics':physics,'total_score':total_score}\n",
    "df['total']=df['chinese']+df['maths']+df['english']+df['physics']\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1ba94dc0-76f3-4a82-9d2a-227cf569c5f1",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "95be914a-5b24-4ef5-a7df-71f59e948850",
   "metadata": {},
   "outputs": [],
   "source": [
    "#作业 计算每个学生的总分平均分，每门课的平均分，按个人总分排序，输出为一个完整的文件名。给出一个分析报告\n",
    "#包括：每门课的及格率，统计各分数段的人数，至少包括 <60,60-80,80-150"
   ]
  },
  {
   "cell_type": "raw",
   "id": "e72b351a-9192-488c-b497-c04d69d7d026",
   "metadata": {},
   "source": [
    "前文代码\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "chinese = np.random.normal(80, 20, 40).astype(np.int32)\n",
    "maths = np.random.normal(60, 30, 40).astype(np.int32)\n",
    "english = np.random.normal(70, 20, 40).astype(np.int32)\n",
    "physics = np.random.normal(80, 10, 40).astype(np.int32)\n",
    "\n",
    "scores = {'chinese':chinese,'maths':maths,'english':english,'physics':physics}\n",
    "df=pd.DataFrame(scores)\n",
    "\n",
    "索引\n",
    "studentid=[]\n",
    "for i in range(40):\n",
    "    studentid.append(32219100001+i)\n",
    "df=pd.DataFrame(scores,index=studentid)\n",
    "\n",
    "总分\n",
    "total=[]\n",
    "df['total']=df['chinese']+df['maths']+df['english']+df['physics']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "b063b9ea-e70b-4298-8cf4-a2e800a61ea0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chinese</th>\n",
       "      <th>maths</th>\n",
       "      <th>english</th>\n",
       "      <th>physics</th>\n",
       "      <th>total</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>32219100001</th>\n",
       "      <td>47</td>\n",
       "      <td>64</td>\n",
       "      <td>56</td>\n",
       "      <td>63</td>\n",
       "      <td>230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100002</th>\n",
       "      <td>86</td>\n",
       "      <td>41</td>\n",
       "      <td>87</td>\n",
       "      <td>59</td>\n",
       "      <td>273</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100003</th>\n",
       "      <td>54</td>\n",
       "      <td>116</td>\n",
       "      <td>78</td>\n",
       "      <td>72</td>\n",
       "      <td>320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100004</th>\n",
       "      <td>46</td>\n",
       "      <td>63</td>\n",
       "      <td>65</td>\n",
       "      <td>85</td>\n",
       "      <td>259</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100005</th>\n",
       "      <td>93</td>\n",
       "      <td>55</td>\n",
       "      <td>85</td>\n",
       "      <td>87</td>\n",
       "      <td>320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100006</th>\n",
       "      <td>66</td>\n",
       "      <td>47</td>\n",
       "      <td>43</td>\n",
       "      <td>67</td>\n",
       "      <td>223</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100007</th>\n",
       "      <td>71</td>\n",
       "      <td>4</td>\n",
       "      <td>62</td>\n",
       "      <td>100</td>\n",
       "      <td>237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100008</th>\n",
       "      <td>79</td>\n",
       "      <td>2</td>\n",
       "      <td>77</td>\n",
       "      <td>99</td>\n",
       "      <td>257</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100009</th>\n",
       "      <td>82</td>\n",
       "      <td>68</td>\n",
       "      <td>43</td>\n",
       "      <td>87</td>\n",
       "      <td>280</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100010</th>\n",
       "      <td>46</td>\n",
       "      <td>33</td>\n",
       "      <td>62</td>\n",
       "      <td>90</td>\n",
       "      <td>231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100011</th>\n",
       "      <td>82</td>\n",
       "      <td>44</td>\n",
       "      <td>102</td>\n",
       "      <td>76</td>\n",
       "      <td>304</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100012</th>\n",
       "      <td>71</td>\n",
       "      <td>71</td>\n",
       "      <td>66</td>\n",
       "      <td>65</td>\n",
       "      <td>273</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100013</th>\n",
       "      <td>86</td>\n",
       "      <td>35</td>\n",
       "      <td>77</td>\n",
       "      <td>55</td>\n",
       "      <td>253</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100014</th>\n",
       "      <td>91</td>\n",
       "      <td>74</td>\n",
       "      <td>74</td>\n",
       "      <td>66</td>\n",
       "      <td>305</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100015</th>\n",
       "      <td>94</td>\n",
       "      <td>83</td>\n",
       "      <td>58</td>\n",
       "      <td>76</td>\n",
       "      <td>311</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100016</th>\n",
       "      <td>81</td>\n",
       "      <td>33</td>\n",
       "      <td>44</td>\n",
       "      <td>83</td>\n",
       "      <td>241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100017</th>\n",
       "      <td>84</td>\n",
       "      <td>70</td>\n",
       "      <td>93</td>\n",
       "      <td>81</td>\n",
       "      <td>328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100018</th>\n",
       "      <td>90</td>\n",
       "      <td>91</td>\n",
       "      <td>60</td>\n",
       "      <td>71</td>\n",
       "      <td>312</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100019</th>\n",
       "      <td>83</td>\n",
       "      <td>21</td>\n",
       "      <td>58</td>\n",
       "      <td>62</td>\n",
       "      <td>224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100020</th>\n",
       "      <td>82</td>\n",
       "      <td>49</td>\n",
       "      <td>112</td>\n",
       "      <td>68</td>\n",
       "      <td>311</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100021</th>\n",
       "      <td>40</td>\n",
       "      <td>22</td>\n",
       "      <td>48</td>\n",
       "      <td>85</td>\n",
       "      <td>195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100022</th>\n",
       "      <td>51</td>\n",
       "      <td>113</td>\n",
       "      <td>93</td>\n",
       "      <td>84</td>\n",
       "      <td>341</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100023</th>\n",
       "      <td>97</td>\n",
       "      <td>61</td>\n",
       "      <td>109</td>\n",
       "      <td>89</td>\n",
       "      <td>356</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100024</th>\n",
       "      <td>75</td>\n",
       "      <td>49</td>\n",
       "      <td>71</td>\n",
       "      <td>76</td>\n",
       "      <td>271</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100025</th>\n",
       "      <td>78</td>\n",
       "      <td>31</td>\n",
       "      <td>56</td>\n",
       "      <td>83</td>\n",
       "      <td>248</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100026</th>\n",
       "      <td>103</td>\n",
       "      <td>56</td>\n",
       "      <td>77</td>\n",
       "      <td>72</td>\n",
       "      <td>308</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100027</th>\n",
       "      <td>49</td>\n",
       "      <td>43</td>\n",
       "      <td>79</td>\n",
       "      <td>81</td>\n",
       "      <td>252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100028</th>\n",
       "      <td>75</td>\n",
       "      <td>55</td>\n",
       "      <td>67</td>\n",
       "      <td>83</td>\n",
       "      <td>280</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100029</th>\n",
       "      <td>67</td>\n",
       "      <td>83</td>\n",
       "      <td>89</td>\n",
       "      <td>73</td>\n",
       "      <td>312</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100030</th>\n",
       "      <td>109</td>\n",
       "      <td>33</td>\n",
       "      <td>71</td>\n",
       "      <td>94</td>\n",
       "      <td>307</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100031</th>\n",
       "      <td>83</td>\n",
       "      <td>72</td>\n",
       "      <td>74</td>\n",
       "      <td>105</td>\n",
       "      <td>334</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100032</th>\n",
       "      <td>86</td>\n",
       "      <td>138</td>\n",
       "      <td>90</td>\n",
       "      <td>73</td>\n",
       "      <td>387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100033</th>\n",
       "      <td>69</td>\n",
       "      <td>24</td>\n",
       "      <td>72</td>\n",
       "      <td>88</td>\n",
       "      <td>253</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100034</th>\n",
       "      <td>102</td>\n",
       "      <td>59</td>\n",
       "      <td>65</td>\n",
       "      <td>70</td>\n",
       "      <td>296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100035</th>\n",
       "      <td>109</td>\n",
       "      <td>26</td>\n",
       "      <td>48</td>\n",
       "      <td>86</td>\n",
       "      <td>269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100036</th>\n",
       "      <td>74</td>\n",
       "      <td>88</td>\n",
       "      <td>93</td>\n",
       "      <td>86</td>\n",
       "      <td>341</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100037</th>\n",
       "      <td>89</td>\n",
       "      <td>165</td>\n",
       "      <td>68</td>\n",
       "      <td>71</td>\n",
       "      <td>393</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100038</th>\n",
       "      <td>75</td>\n",
       "      <td>41</td>\n",
       "      <td>86</td>\n",
       "      <td>83</td>\n",
       "      <td>285</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100039</th>\n",
       "      <td>72</td>\n",
       "      <td>112</td>\n",
       "      <td>87</td>\n",
       "      <td>97</td>\n",
       "      <td>368</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100040</th>\n",
       "      <td>75</td>\n",
       "      <td>100</td>\n",
       "      <td>47</td>\n",
       "      <td>102</td>\n",
       "      <td>324</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             chinese  maths  english  physics  total\n",
       "32219100001       47     64       56       63    230\n",
       "32219100002       86     41       87       59    273\n",
       "32219100003       54    116       78       72    320\n",
       "32219100004       46     63       65       85    259\n",
       "32219100005       93     55       85       87    320\n",
       "32219100006       66     47       43       67    223\n",
       "32219100007       71      4       62      100    237\n",
       "32219100008       79      2       77       99    257\n",
       "32219100009       82     68       43       87    280\n",
       "32219100010       46     33       62       90    231\n",
       "32219100011       82     44      102       76    304\n",
       "32219100012       71     71       66       65    273\n",
       "32219100013       86     35       77       55    253\n",
       "32219100014       91     74       74       66    305\n",
       "32219100015       94     83       58       76    311\n",
       "32219100016       81     33       44       83    241\n",
       "32219100017       84     70       93       81    328\n",
       "32219100018       90     91       60       71    312\n",
       "32219100019       83     21       58       62    224\n",
       "32219100020       82     49      112       68    311\n",
       "32219100021       40     22       48       85    195\n",
       "32219100022       51    113       93       84    341\n",
       "32219100023       97     61      109       89    356\n",
       "32219100024       75     49       71       76    271\n",
       "32219100025       78     31       56       83    248\n",
       "32219100026      103     56       77       72    308\n",
       "32219100027       49     43       79       81    252\n",
       "32219100028       75     55       67       83    280\n",
       "32219100029       67     83       89       73    312\n",
       "32219100030      109     33       71       94    307\n",
       "32219100031       83     72       74      105    334\n",
       "32219100032       86    138       90       73    387\n",
       "32219100033       69     24       72       88    253\n",
       "32219100034      102     59       65       70    296\n",
       "32219100035      109     26       48       86    269\n",
       "32219100036       74     88       93       86    341\n",
       "32219100037       89    165       68       71    393\n",
       "32219100038       75     41       86       83    285\n",
       "32219100039       72    112       87       97    368\n",
       "32219100040       75    100       47      102    324"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "61a23f58-f742-4e6a-8dea-76b8729b195e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算个人平均分\n",
    "average=[]\n",
    "df['average']=(df['chinese']+df['maths']+df['english']+df['physics'])/4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "39c57be0-b9e4-498c-bfe0-940c4d3e34ca",
   "metadata": {},
   "outputs": [],
   "source": [
    "#df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2b74a0fb-a820-4fca-ad44-e1fb411f52d3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[77.3, 60.875, 72.3, 79.825]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Average score of each subject</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>chinese</th>\n",
       "      <td>77.300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>maths</th>\n",
       "      <td>60.875</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>english</th>\n",
       "      <td>72.300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>physics</th>\n",
       "      <td>79.825</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Average score of each subject\n",
       "chinese                         77.300\n",
       "maths                           60.875\n",
       "english                         72.300\n",
       "physics                         79.825"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算单科平均分\n",
    "\n",
    "subjuct=['chinese','maths','english','physics']\n",
    "a_list = []\n",
    "\n",
    "for j in range(4):\n",
    "    a_1=0\n",
    "    for i in range(1,41):\n",
    "        a_1+=df[subjuct[j]][32219100000+i]\n",
    "    a_2=a_1/40\n",
    "    a_list.append(a_2)\n",
    "    #print(a_2)\n",
    "\n",
    "# 打印单科平均分、总分列表\n",
    "print(a_list)\n",
    "\n",
    "#转换格式\n",
    "\n",
    "average_subjuct=pd.DataFrame(a_list,index=subjuct,columns = ['Average score of each subject'])\n",
    "average_subjuct"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "a50335f2-9af6-43a8-9a9b-ec54481fee24",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chinese</th>\n",
       "      <th>maths</th>\n",
       "      <th>english</th>\n",
       "      <th>physics</th>\n",
       "      <th>total</th>\n",
       "      <th>average</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>32219100037</th>\n",
       "      <td>89</td>\n",
       "      <td>165</td>\n",
       "      <td>68</td>\n",
       "      <td>71</td>\n",
       "      <td>393</td>\n",
       "      <td>98.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100032</th>\n",
       "      <td>86</td>\n",
       "      <td>138</td>\n",
       "      <td>90</td>\n",
       "      <td>73</td>\n",
       "      <td>387</td>\n",
       "      <td>96.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100039</th>\n",
       "      <td>72</td>\n",
       "      <td>112</td>\n",
       "      <td>87</td>\n",
       "      <td>97</td>\n",
       "      <td>368</td>\n",
       "      <td>92.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100023</th>\n",
       "      <td>97</td>\n",
       "      <td>61</td>\n",
       "      <td>109</td>\n",
       "      <td>89</td>\n",
       "      <td>356</td>\n",
       "      <td>89.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100022</th>\n",
       "      <td>51</td>\n",
       "      <td>113</td>\n",
       "      <td>93</td>\n",
       "      <td>84</td>\n",
       "      <td>341</td>\n",
       "      <td>85.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100036</th>\n",
       "      <td>74</td>\n",
       "      <td>88</td>\n",
       "      <td>93</td>\n",
       "      <td>86</td>\n",
       "      <td>341</td>\n",
       "      <td>85.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100031</th>\n",
       "      <td>83</td>\n",
       "      <td>72</td>\n",
       "      <td>74</td>\n",
       "      <td>105</td>\n",
       "      <td>334</td>\n",
       "      <td>83.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100017</th>\n",
       "      <td>84</td>\n",
       "      <td>70</td>\n",
       "      <td>93</td>\n",
       "      <td>81</td>\n",
       "      <td>328</td>\n",
       "      <td>82.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100040</th>\n",
       "      <td>75</td>\n",
       "      <td>100</td>\n",
       "      <td>47</td>\n",
       "      <td>102</td>\n",
       "      <td>324</td>\n",
       "      <td>81.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100002</th>\n",
       "      <td>54</td>\n",
       "      <td>116</td>\n",
       "      <td>78</td>\n",
       "      <td>72</td>\n",
       "      <td>320</td>\n",
       "      <td>80.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100005</th>\n",
       "      <td>93</td>\n",
       "      <td>55</td>\n",
       "      <td>85</td>\n",
       "      <td>87</td>\n",
       "      <td>320</td>\n",
       "      <td>80.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100018</th>\n",
       "      <td>90</td>\n",
       "      <td>91</td>\n",
       "      <td>60</td>\n",
       "      <td>71</td>\n",
       "      <td>312</td>\n",
       "      <td>78.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100029</th>\n",
       "      <td>67</td>\n",
       "      <td>83</td>\n",
       "      <td>89</td>\n",
       "      <td>73</td>\n",
       "      <td>312</td>\n",
       "      <td>78.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100015</th>\n",
       "      <td>94</td>\n",
       "      <td>83</td>\n",
       "      <td>58</td>\n",
       "      <td>76</td>\n",
       "      <td>311</td>\n",
       "      <td>77.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100020</th>\n",
       "      <td>82</td>\n",
       "      <td>49</td>\n",
       "      <td>112</td>\n",
       "      <td>68</td>\n",
       "      <td>311</td>\n",
       "      <td>77.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100026</th>\n",
       "      <td>103</td>\n",
       "      <td>56</td>\n",
       "      <td>77</td>\n",
       "      <td>72</td>\n",
       "      <td>308</td>\n",
       "      <td>77.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100030</th>\n",
       "      <td>109</td>\n",
       "      <td>33</td>\n",
       "      <td>71</td>\n",
       "      <td>94</td>\n",
       "      <td>307</td>\n",
       "      <td>76.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100014</th>\n",
       "      <td>91</td>\n",
       "      <td>74</td>\n",
       "      <td>74</td>\n",
       "      <td>66</td>\n",
       "      <td>305</td>\n",
       "      <td>76.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100011</th>\n",
       "      <td>82</td>\n",
       "      <td>44</td>\n",
       "      <td>102</td>\n",
       "      <td>76</td>\n",
       "      <td>304</td>\n",
       "      <td>76.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100034</th>\n",
       "      <td>102</td>\n",
       "      <td>59</td>\n",
       "      <td>65</td>\n",
       "      <td>70</td>\n",
       "      <td>296</td>\n",
       "      <td>74.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100038</th>\n",
       "      <td>75</td>\n",
       "      <td>41</td>\n",
       "      <td>86</td>\n",
       "      <td>83</td>\n",
       "      <td>285</td>\n",
       "      <td>71.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100009</th>\n",
       "      <td>82</td>\n",
       "      <td>68</td>\n",
       "      <td>43</td>\n",
       "      <td>87</td>\n",
       "      <td>280</td>\n",
       "      <td>70.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100028</th>\n",
       "      <td>75</td>\n",
       "      <td>55</td>\n",
       "      <td>67</td>\n",
       "      <td>83</td>\n",
       "      <td>280</td>\n",
       "      <td>70.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100001</th>\n",
       "      <td>86</td>\n",
       "      <td>41</td>\n",
       "      <td>87</td>\n",
       "      <td>59</td>\n",
       "      <td>273</td>\n",
       "      <td>68.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100012</th>\n",
       "      <td>71</td>\n",
       "      <td>71</td>\n",
       "      <td>66</td>\n",
       "      <td>65</td>\n",
       "      <td>273</td>\n",
       "      <td>68.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100024</th>\n",
       "      <td>75</td>\n",
       "      <td>49</td>\n",
       "      <td>71</td>\n",
       "      <td>76</td>\n",
       "      <td>271</td>\n",
       "      <td>67.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100035</th>\n",
       "      <td>109</td>\n",
       "      <td>26</td>\n",
       "      <td>48</td>\n",
       "      <td>86</td>\n",
       "      <td>269</td>\n",
       "      <td>67.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100004</th>\n",
       "      <td>46</td>\n",
       "      <td>63</td>\n",
       "      <td>65</td>\n",
       "      <td>85</td>\n",
       "      <td>259</td>\n",
       "      <td>64.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100008</th>\n",
       "      <td>79</td>\n",
       "      <td>2</td>\n",
       "      <td>77</td>\n",
       "      <td>99</td>\n",
       "      <td>257</td>\n",
       "      <td>64.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100013</th>\n",
       "      <td>86</td>\n",
       "      <td>35</td>\n",
       "      <td>77</td>\n",
       "      <td>55</td>\n",
       "      <td>253</td>\n",
       "      <td>63.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100033</th>\n",
       "      <td>69</td>\n",
       "      <td>24</td>\n",
       "      <td>72</td>\n",
       "      <td>88</td>\n",
       "      <td>253</td>\n",
       "      <td>63.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100027</th>\n",
       "      <td>49</td>\n",
       "      <td>43</td>\n",
       "      <td>79</td>\n",
       "      <td>81</td>\n",
       "      <td>252</td>\n",
       "      <td>63.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100025</th>\n",
       "      <td>78</td>\n",
       "      <td>31</td>\n",
       "      <td>56</td>\n",
       "      <td>83</td>\n",
       "      <td>248</td>\n",
       "      <td>62.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100016</th>\n",
       "      <td>81</td>\n",
       "      <td>33</td>\n",
       "      <td>44</td>\n",
       "      <td>83</td>\n",
       "      <td>241</td>\n",
       "      <td>60.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100007</th>\n",
       "      <td>71</td>\n",
       "      <td>4</td>\n",
       "      <td>62</td>\n",
       "      <td>100</td>\n",
       "      <td>237</td>\n",
       "      <td>59.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100010</th>\n",
       "      <td>46</td>\n",
       "      <td>33</td>\n",
       "      <td>62</td>\n",
       "      <td>90</td>\n",
       "      <td>231</td>\n",
       "      <td>57.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100003</th>\n",
       "      <td>47</td>\n",
       "      <td>64</td>\n",
       "      <td>56</td>\n",
       "      <td>63</td>\n",
       "      <td>230</td>\n",
       "      <td>57.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100019</th>\n",
       "      <td>83</td>\n",
       "      <td>21</td>\n",
       "      <td>58</td>\n",
       "      <td>62</td>\n",
       "      <td>224</td>\n",
       "      <td>56.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100006</th>\n",
       "      <td>66</td>\n",
       "      <td>47</td>\n",
       "      <td>43</td>\n",
       "      <td>67</td>\n",
       "      <td>223</td>\n",
       "      <td>55.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32219100021</th>\n",
       "      <td>40</td>\n",
       "      <td>22</td>\n",
       "      <td>48</td>\n",
       "      <td>85</td>\n",
       "      <td>195</td>\n",
       "      <td>48.75</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             chinese  maths  english  physics  total  average\n",
       "32219100037       89    165       68       71    393    98.25\n",
       "32219100032       86    138       90       73    387    96.75\n",
       "32219100039       72    112       87       97    368    92.00\n",
       "32219100023       97     61      109       89    356    89.00\n",
       "32219100022       51    113       93       84    341    85.25\n",
       "32219100036       74     88       93       86    341    85.25\n",
       "32219100031       83     72       74      105    334    83.50\n",
       "32219100017       84     70       93       81    328    82.00\n",
       "32219100040       75    100       47      102    324    81.00\n",
       "32219100002       54    116       78       72    320    80.00\n",
       "32219100005       93     55       85       87    320    80.00\n",
       "32219100018       90     91       60       71    312    78.00\n",
       "32219100029       67     83       89       73    312    78.00\n",
       "32219100015       94     83       58       76    311    77.75\n",
       "32219100020       82     49      112       68    311    77.75\n",
       "32219100026      103     56       77       72    308    77.00\n",
       "32219100030      109     33       71       94    307    76.75\n",
       "32219100014       91     74       74       66    305    76.25\n",
       "32219100011       82     44      102       76    304    76.00\n",
       "32219100034      102     59       65       70    296    74.00\n",
       "32219100038       75     41       86       83    285    71.25\n",
       "32219100009       82     68       43       87    280    70.00\n",
       "32219100028       75     55       67       83    280    70.00\n",
       "32219100001       86     41       87       59    273    68.25\n",
       "32219100012       71     71       66       65    273    68.25\n",
       "32219100024       75     49       71       76    271    67.75\n",
       "32219100035      109     26       48       86    269    67.25\n",
       "32219100004       46     63       65       85    259    64.75\n",
       "32219100008       79      2       77       99    257    64.25\n",
       "32219100013       86     35       77       55    253    63.25\n",
       "32219100033       69     24       72       88    253    63.25\n",
       "32219100027       49     43       79       81    252    63.00\n",
       "32219100025       78     31       56       83    248    62.00\n",
       "32219100016       81     33       44       83    241    60.25\n",
       "32219100007       71      4       62      100    237    59.25\n",
       "32219100010       46     33       62       90    231    57.75\n",
       "32219100003       47     64       56       63    230    57.50\n",
       "32219100019       83     21       58       62    224    56.00\n",
       "32219100006       66     47       43       67    223    55.75\n",
       "32219100021       40     22       48       85    195    48.75"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 总分排序\n",
    "new_index = list(df.index)\n",
    "\n",
    "for i in range(40):\n",
    "    for j in range(39 - i):\n",
    "        if df.iloc[j, 5] < df.iloc[j + 1, 5]:\n",
    "            df.iloc[j], df.iloc[j + 1] = df.iloc[j + 1], df.iloc[j]\n",
    "            new_index[j], new_index[j + 1] = new_index[j + 1], new_index[j]\n",
    "\n",
    "df.index = new_index\n",
    "df.to_csv('rank.csv') \n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "2173ed12-9263-49be-a488-61d5ad304ef3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 每门课的及格率，统计0-60,60-80,80-150分数段人数\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "1245b140-6942-4005-94af-6c3399caa13d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "科目 chinese 及格的人数为 9\n",
      "科目 maths 及格的人数为 7\n",
      "科目 english 及格的人数为 7\n",
      "科目 physics 及格的人数为 7\n",
      "[9, 7, 7, 7]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "a = [0, 0, 0, 0]  \n",
    "subject = ['chinese', 'maths', 'english', 'physics']\n",
    "\n",
    "for i, subject in enumerate(subjects):\n",
    "    # 统计90分及以上的人数\n",
    "    a[i] = len(df[df[subject] >= 90])\n",
    "    print('科目',subjuct[i],'及格的人数为',a[i])\n",
    "\n",
    "# 输出结果\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "0f6852b5-210f-4dba-891c-8d62bcb465b8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "科目 chinese 0-60分的人数为 7\n",
      "科目 chinese 60-80分的人数为 13\n",
      "科目 chinese 80-150分的人数为 20\n",
      "科目 maths 0-60分的人数为 22\n",
      "科目 maths 60-80分的人数为 8\n",
      "科目 maths 80-150分的人数为 10\n",
      "科目 english 0-60分的人数为 11\n",
      "科目 english 60-80分的人数为 18\n",
      "科目 english 80-150分的人数为 12\n",
      "科目 physics 0-60分的人数为 2\n",
      "科目 physics 60-80分的人数为 16\n",
      "科目 physics 80-150分的人数为 22\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "b1 = [0, 0, 0, 0]  \n",
    "b2 = [0, 0, 0, 0]\n",
    "b3 = [0, 0, 0, 0]\n",
    "subject = ['chinese', 'maths', 'english', 'physics']\n",
    "\n",
    "for i, subject in enumerate(subjects):\n",
    "    b1[i] = len(df[df[subject] <= 60])\n",
    "    print('科目',subjuct[i],'0-60分的人数为',b1[i])\n",
    "    \n",
    "    b2[i] = len(df[(df[subject] >= 60) & (df[subject] <= 80)])\n",
    "    print('科目',subjuct[i],'60-80分的人数为',b2[i])\n",
    "        \n",
    "    b3[i] = len(df[df[subject] >= 80])\n",
    "    print('科目',subjuct[i],'80-150分的人数为',b3[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "343c1c69-63a1-486a-a443-b7d9d51aff00",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
